﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;

using RRHH.Competencias.Entities;
using RRHH.Competencias.Controladores;


public partial class RadarChartImprimir : System.Web.UI.Page
{
    protected ReportDocument reporte;
    
    protected void Page_Load(object sender, EventArgs e)
    {
        
        if (!Page.IsPostBack)
        {
            if (Session["ADUS.Login.UsuarioID"] == null) return;
            if (Session["ADUS.Login.Empresa"] == null) return;

            

            Proceso proceso = null;
            long idProceso;

            if (!string.IsNullOrEmpty(Request.QueryString["IdProceso"])
                && long.TryParse(Request.QueryString["IdProceso"], out idProceso))
            {
                proceso = new Proceso();
                proceso.Id = idProceso;
            }

            Colaborador colaborador = null;
            long idColaborador;

            if (!string.IsNullOrEmpty(Request.QueryString["IdColaborador"])
               && long.TryParse(Request.QueryString["IdColaborador"], out idColaborador))
            {
                colaborador = new Colaborador();
                colaborador.IdColaborador = idColaborador;
            }

            TipoCapacidad tipo = null;
            long idTipoCapacidad;

            if (!string.IsNullOrEmpty(Request.QueryString["IdTipoCapacidad"])
               && long.TryParse(Request.QueryString["IdTipoCapacidad"], out idTipoCapacidad))
            {
                tipo = new TipoCapacidad();
                tipo.Id = idTipoCapacidad;
            }

            this.GenerarReporte(proceso, colaborador, tipo);
        }
    }

    private void GenerarReporte(Proceso proceso, Colaborador colaborador, TipoCapacidad tipo)
    {
        GestorRadarChart gRadarChart = new GestorRadarChart();
        DataTable tablaResultado = null;
        RadarChart chart;

        try
        {
            if (proceso != null && colaborador != null)
            {
                chart = gRadarChart.ObtenerDatosRadarChart(proceso, colaborador);
            }
            else
            {
                if (colaborador != null)
                {
                    chart = gRadarChart.ObtenerDatosRadarChart(colaborador);
                }
                else
                {
                    chart = gRadarChart.ObtenerDatosRadarChart(proceso);
                }
            }

            tablaResultado = gRadarChart.GenerarTabla(chart, tipo);
        }
        catch (Exception ex)
        {
            Response.Write("No se pudo generar el reporte. " + ex.Message);
            return;
        }

        tablaResultado.DefaultView.RowFilter = "TipoCapacidadId = 1";
            
        reporte = new ReportDocument();
        reporte.Load(Server.MapPath("Reportes\\RptRadarChartTipoCapacidad.rpt"));
        reporte.SetDataSource(tablaResultado);

        reporte.ExportToHttpResponse(ExportFormatType.PortableDocFormat, this.Response, false, "radarchart");
    }
}
